class AIAssistant:
    def __init__(self, id, name, type_, version, is_online, ability_score):
        self.id = id
        self.name = name
        self.type_ = type_
        self.version = version
        self.is_online = is_online
        self.ability_score = ability_score

    def __str__(self):
        """格式化打印助手信息（类似Java的toString）"""
        status = "在线" if self.is_online else "离线"
        return f"ID:{self.id} | 名称:{self.name} | 类型:{self.type_} | 版本:{self.version} | 状态:{status} | 评分:{self.ability_score}"

class AIManager:
    MAX_SIZE = 10  # 系统最多存储10个助手（和原Java一致）

    def __init__(self):
        self.assistants = []

    # 1. 添加新助手
    def add_assistant(self, assistant):
        if len(self.assistants) >= self.MAX_SIZE:
            print(" 系统满了，不能加新助手啦！")
            return False
        # 再检查ID是否重复
        for a in self.assistants:
            if a.id == assistant.id:
                print(f" ID:{assistant.id}已存在！")
                return False
        # 添加成功
        self.assistants.append(assistant)
        print(f" 助手【{assistant.name}】添加成功！")
        return True

    # 2. 按ID找助手（内部工具方法，供其他功能调用）
    def _find_by_id(self, id):
        for assistant in self.assistants:
            if assistant.id == id:
                return assistant
        return None

    # 3. 查看所有助手
    def show_all(self):
        if not self.assistants:  # 列表为空
            print(" 暂无助手数据！")
            return
        print("所有AI助手列表：")
        for idx, assistant in enumerate(self.assistants, 1):
            print(f"{idx}. {assistant}")

    # 4. 按ID查询助手详情
    def show_by_id(self, id):
        assistant = self._find_by_id(id)
        if assistant:
            print(f" 查询结果：{assistant}")
        else:
            print(f" 没找到ID:{id}的助手！")

    # 5. 修改助手信息（支持：名称、版本、评分）
    def modify_assistant(self, id, prop, value):
        assistant = self._find_by_id(id)
        if not assistant:
            print(" 没找到助手！")
            return

        # 统一属性名为小写，避免用户输入大小写问题
        prop = prop.lower()
        if prop == "name":
            assistant.name = value
        elif prop == "version":
            assistant.version = value
        elif prop == "score":
            try:
                score = int(value)
                if 0 <= score <= 100:
                    assistant.ability_score = score
                else:
                    print(" 评分必须在0-100之间！")
                    return
            except ValueError:
                print(" 评分必须是整数（如80、95）！")
                return
        else:
            print(" 只能修改以下属性：name（名称）、version（版本）、score（评分）")
            return

        print(f" 助手【ID:{id}】修改成功！")

    # 6. 按ID删除助手
    def delete_assistant(self, id):
        assistant = self._find_by_id(id)
        if not assistant:
            print(" 没找到助手！")
            return
        # 从列表中删除助手
        self.assistants.remove(assistant)
        print(f" 助手【ID:{id}】已删除！")

    # 7. 启动/停止助手服务
    def start_or_stop(self, id, is_start):
        assistant = self._find_by_id(id)
        if not assistant:
            print(" 没找到助手！")
            return

        if is_start:  # 启动
            if assistant.is_online:
                print(f" 助手【{assistant.name}】已在线！")
            else:
                assistant.is_online = True
                print(f" 助手【{assistant.name}】启动成功！")
        else:  # 停止
            if not assistant.is_online:
                print(f" 助手【{assistant.name}】已离线！")
            else:
                assistant.is_online = False
                print(f" 助手【{assistant.name}】停止成功！")

    # 8. 为助手分配任务（仅在线助手可执行）
    def assign_task(self, id, task):
        assistant = self._find_by_id(id)
        if not assistant:
            print(" 没找到助手！")
            return
        if not assistant.is_online:
            print(f" {assistant.name}当前离线，无法执行任务！")
            return
        print(f" {assistant.name}（{assistant.type_}）已执行任务：{task}")

    # 9. 显示系统统计信息
    def show_stats(self):
        if not self.assistants:
            print(" 暂无统计数据！")
            return

        total_count = len(self.assistants)
        online_count = sum(1 for a in self.assistants if a.is_online)  # 统计在线数
        offline_count = total_count - online_count
        total_score = sum(a.ability_score for a in self.assistants)  # 总评分
        avg_score = total_score / total_count  # 平均评分

        print("===== 系统统计信息 =====")
        print(f"总助手数: {total_count}")
        print(f"在线助手数: {online_count}")
        print(f"离线助手数: {offline_count}")
        print(f"平均能力评分: {avg_score:.2f}")  # 保留2位小数，更直观

def main():
    manager = AIManager()

    test_assistants = [
        AIAssistant(101, "小智", "语音助手", "v1.2", True, 85),
        AIAssistant(102, "文小助", "文本生成助手", "v2.0", True, 92),
        AIAssistant(103, "图灵", "图片生成助手", "v1.5", False, 88),
        AIAssistant(104, "数小析", "数据分析助手", "v1.0", True, 79),
        AIAssistant(105, "翻译精灵", "翻译助手", "v2.1", False, 95)
    ]
    for a in test_assistants:
        manager.add_assistant(a)
    while True:
        print("\n========== AI助手管理器 ==========")
        print("1. 查看所有助手列表")
        print("2. 按ID查询助手详情")
        print("3. 添加新助手")
        print("4. 按ID修改助手信息")
        print("5. 按ID删除助手")
        print("6. 启动助手服务")
        print("7. 停止助手服务")
        print("8. 为助手分配任务")
        print("9. 显示系统统计信息")
        print("0. 退出系统")
        print("===================================")

        try:
            choice = input("请输入操作编号: ").strip()
            if not choice.isdigit():
                print("错误 请输入0-9之间的数字！")
                continue
            choice = int(choice)

            if choice == 0:
                print(" 退出成功，再见！")
                break

            elif choice == 1:
                manager.show_all()

            elif choice == 2:
                id_input = input("请输入要查询的助手ID: ").strip()
                if not id_input.isdigit():
                    print("错误 ID必须是整数（如101、102）！")
                    continue
                manager.show_by_id(int(id_input))

            elif choice == 3:
                try:
                    id = int(input("请输入助手ID: ").strip())
                    name = input("请输入助手名称: ").strip()
                    type_ = input("请输入助手类型（数据分析/图片生成/文本生成/翻译/语音）: ").strip()
                    version = input("请输入助手版本（如v3.1）: ").strip()
                    online_input = input("是否在线（1=是，0=否）: ").strip()
                    is_online = online_input == "1"  # 1转True，其他转False
                    score = int(input("请输入能力评分（0-100）: ").strip())

                    if not (0 <= score <= 100):
                        print(" 评分必须在0-100之间！")
                        continue
                    new_assist = AIAssistant(id, name, type_, version, is_online, score)
                    manager.add_assistant(new_assist)
                except ValueError:
                    print("错误 ID或评分必须是整数！")

            elif choice == 4:
                id_input = input("请输入要修改的助手ID: ").strip()
                if not id_input.isdigit():
                    print("错误 ID必须是整数！")
                    continue
                modify_input = input("请输入属性和值（空格分隔，如name 新名称 或 score 90）: ").strip()
                parts = modify_input.split(" ", 1)
                if len(parts) != 2:
                    print("错误 格式错！正确示例：name 小新 或 version v2.5")
                    continue
                prop, value = parts
                manager.modify_assistant(int(id_input), prop, value)

            elif choice == 5:
                id_input = input("请输入要删除的助手ID: ").strip()
                if not id_input.isdigit():
                    print("错误 ID必须是整数！")
                    continue
                manager.delete_assistant(int(id_input))

            elif choice == 6:
                id_input = input("请输入要启动的助手ID: ").strip()
                if not id_input.isdigit():
                    print("错误 ID必须是整数！")
                    continue
                manager.start_or_stop(int(id_input), is_start=True)

            elif choice == 7:
                id_input = input("请输入要停止的助手ID: ").strip()
                if not id_input.isdigit():
                    print("错误 ID必须是整数！")
                    continue
                manager.start_or_stop(int(id_input), is_start=False)

            elif choice == 8:
                id_input = input("请输入要分配任务的助手ID: ").strip()
                if not id_input.isdigit():
                    print("错误 ID必须是整数！")
                    continue
                task = input("请输入任务内容: ").strip()
                if not task:
                    print("错误 任务内容不能为空！")
                    continue
                manager.assign_task(int(id_input), task)

            elif choice == 9:
                manager.show_stats()

            else:
                print("错误 请输入0-9之间的编号！")

        except Exception as e:
            print(f"操作出错：{str(e)}")

if __name__ == "__main__":
    main()